Internet usage has exploded over the past several years and continues to grow. People have become very comfortable with many services offered on the World Wide Web (or simply “Web”), such as electronic mail, online shopping, gathering news and information, listening to music, viewing video clips, looking for jobs, and so forth. To keep pace with the growing demand for Internet-based services, there has been tremendous growth in the computer systems dedicated to hosting Websites, providing backend services for those sites, and storing data associated with the sites.
One type of distributed computer system is a data center (such as an Internet data center (IDC) or an Enterprise Data Center (EDC)), which is a specifically designed complex that houses many computers for hosting network-based services. Data centers, which may also go by the names of “Webfarms” or “server farms”, typically house hundreds to thousands of computers in climate-controlled, physically secure buildings. Data centers typically provide reliable Internet access, reliable power supplies, and a secure operating environment.
Different data centers can have different requirements that they impose on applications run in the data centers. For example, different data centers may require different types of security to be enforced, or require that applications support different communication protocols. Additionally, some data centers may change these requirements over time. These differences among data centers makes the design process of applications difficult, as the designers must be aware of these different requirements and account for them in the design of their applications in order for their applications to be able to be run on the desired data center(s).
Furthermore, currently a designer is typically only able to evaluate whether their application will run in a particular data center when they are deploying their application to the data center. If the deployment is unsuccessful because one or more of the requirements of the data center are not satisfied by the application, then the designer is required to attempt to fix the problem(s) with the application and then re-attempt deployment of the application at the data center. This process can be repeated many times, and can result in an inefficient and frustrating design process.
The design time validation of systems described herein solves these and other problems.